//
//  DCWError.m
//  Meng800
//
//  Created by 姚宗超 on 14/7/19.
//  Copyright (c) 2014年 点财网. All rights reserved.
//

#import "MPError.h"

@interface MPError ()

@end

@implementation MPError

- (NSString*)description
{
    NSString* s = [self.userInfo objectForKey:@"error_msg"];
    if (s.length > 0) {
        return s;
    }
    else {
        return [super description];
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////
+ (MPError*)errorWithRestInfo:(NSDictionary*)restInfo {
    
    NSNumber* errorCode = [restInfo objectForKey:@"error_code"];
    KDLogInfo(@"%d=%@", [errorCode intValue], [restInfo objectForKey:@"error_msg"]);
    MPError* error = [MPError errorWithDomain:@"MP" code:[errorCode intValue] userInfo:restInfo];
    return error;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
+ (MPError*)errorWithNSError:(NSError*)error {
    if (!error) {
        return nil;
    }
    MPError* myError = [MPError errorWithDomain:error.domain code:error.code userInfo:error.userInfo];
    KDLogInfo(@"code=%ld", (long)myError.code);
    return myError;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
+ (MPError*)errorWithCode:(MPErrorCode)code errorMessage:(NSString*)errorMessage {
    NSMutableDictionary* userInfo = [[NSMutableDictionary alloc] initWithCapacity:2];
    [userInfo setObject:[NSString stringWithFormat:@"%d", code] forKey:@"error_code"];
    if (errorMessage) {
        [userInfo setObject:errorMessage forKey:@"error_msg"];
    }
    
    MPError* error = [MPError errorWithDomain:@"MP" code:code userInfo:userInfo];
    return error;
    
}
///////////////////////////////////////////////////////////////////////////////////////////////////
- (id)initWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict {
    if (self = [super initWithDomain:domain code:code userInfo:dict]) {
    }
    return self;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
- (NSString*)titleForError {
    NSString* title = nil;
    if (NSOrderedSame == [self.domain compare:@"NSURLErrorDomain"]) {
        switch (self.code) {
            case NSURLErrorNotConnectedToInternet:
                title = @"网络连接失败，请稍后再试";
            case NSURLErrorTimedOut:
                title = @"连接超时";
            case kCFURLErrorCancelled:
                title = @"您取消了网络连接";
            default:
                break;
        }
    } else if (NSOrderedSame == [self.domain compare:@"NSPOSIXErrorDomain"]) {
        title = @"网络连接失败，请稍后再试";
    }
    else {
        // 这里可以根据错误码，自己写一些错误提示，注释掉则直接用服务端提供的错误信息
        if (self.code == MPErrorCodePlatformMoreThan4) {
            title = @"您选择的平台数量限制不超过4个";
        }
        else if (self.code == MPErrorCodePlatformZero)
        {
            title = @"您选择的平台数量为空";
        }
    }
    
    if (title == nil) {
        title = [self.userInfo objectForKey:@"error_msg"];
    }
    // 如果还没取到，就写死
    if (title == nil) {
        title = @"网络连接失败，请稍后再试";
    }
    
    return title;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
- (NSString*)subtitleForError {
    return nil;
}

@end
